#pragma once

//初始化监听套接字
int init_listen_fd(unsigned short port);

//启动epoll
int epoll_run(int fd);

//子线程处理函数：	和客户端建立连接的函数
void* accept_client(void* arg);

//子线程处理函数	接收Http的请求消息
void* recv_http_request(void* arg);

//解析请求行
int parse_request_line(const char* line, int cfd);

//发送文件
int send_file(const char* file_name, int cfd);

//发送响应头（状态行和响应头）
int send_head_msg(int cfd, int status, const char* descr, const char* type, int length);

//根据文件后缀获取对应的content-type
const char* get_file_type(const char* file_name);

//发送目录
int send_dir(const char* dir, int cfd);

//将字符转换为整形数
int hex_to_dec(char c);

//解码 :to 存储解码之后的数据，转出参数，from被解码的数据，转入参数
void decode_msg(char* to, char* from);